<?php

/**
 * Subclass for representing a row from the 'cita' table.
 *
 *
 *
 * @package lib.model
 */
class Cita extends BaseCita
{
    public $nombreTurno='';
	public $nombreEspecialista='';
    public $cedulaEstudiante='';
    public $nombreEstudiante='';
    public $bloqueDeHoras='';
    public $cedulaEstudianteConId='';
    public $objsBloquesDisponiblesDeEspecialista='';
    public $objsTurnosEspecialista='';

  // Funcion que retorna el Turno en que fue registrada una Cita
  // Retorna String
  function getNombreTurno()
     {
       if ($this->nombreTurno=='')
         {
           $objTurno =  $this->getTurno();
           $this->nombreTurno = $objTurno->getNomTurno();
         }
      return  $this->nombreTurno;
     }

  // Funcion que retorna el Bloque de horas( Ej. 9:00-10:00) en que fue registrada una Cita
  // Retorna String
  function getBloqueDeHoras()
     {
       if ($this->bloqueDeHoras=='')
         {
           $objBloque =  $this->getBloque();
           $this->bloqueDeHoras = $objBloque->getHoras();
         }
      return  $this->bloqueDeHoras;
     }


  // Funcion que retorna la Cedula del estudiante que solicito una cita
  // Retorna String
  function getCedulaEstudiante()
     {

        if ($this->cedulaEstudiante=='')
        {
           $c = new Criteria();
           $c->add(DatoEstudiantePeer::USUARIOATENEA_ID, $this->getSolicitanteId());
           $objDatoEstudiante = DatoEstudiantePeer::doSelectOne($c);
           $this->cedulaEstudiante = $objDatoEstudiante->getCedula();
        }
      return  $this->cedulaEstudiante;
     }


  // Funcion que retorna el la Cedula del estudiante que tiene un id usuario
  // Parametro id Usuario
  // Retorna String (Cedula)
  function getCedulaEstudianteConId($id)
     {

        if ($this->cedulaEstudianteConId=='')
        {
           $c = new Criteria();
           $c->add(DatoEstudiantePeer::USUARIOATENEA_ID, $id);
           $objDatoEstudiante = DatoEstudiantePeer::doSelectOne($c);
           $this->cedulaEstudianteConId = $objDatoEstudiante->getCedula();
        }
      return  $this->cedulaEstudianteConId;
     }


  // Funcion que retorna el Nombre y Apellido de un estudiante
  // Retorna String
  function getNombreEstudiante()
     {
  	   if ($this->nombreEstudiante=='')
  	   {
           $c = new Criteria();
           $c->add(EstudiantePeer::CEDULA, $this->getCedulaEstudiante());
           $objEstudiante = EstudiantePeer::doSelectOne($c);
           $this->nombreEstudiante = $objEstudiante->getNombreCompleto();
       }
      return $this->nombreEstudiante;
     }





  // Funcion que retorna el Nombre y Apellido del especialista que atendera o atendio una Cita
  // Retorna String
  function getNombreEspecialista()
  {

  	   if ($this->nombreEspecialista=='')
  	   {
           $c = new Criteria();
           $c->add(DatoPersonalPeer::USUARIOATENEA_ID, $this->getEspecialistaId());
           $objDatoPersonal = DatoPersonalPeer::doSelectOne($c);
           $this->nombreEspecialista = $objDatoPersonal->getNombreCompleto();
       }
     return  $this->nombreEspecialista;
  }


    /* Funcion que retorna un arreglo de Bloques de Horas disponibles para una cita de un
       especialista para una fecha determinada.
	   Parametro Id del Usuario(Especialista), Fecha
	   Retorna arreglo de Bloques de horas  */

function getObjsBloquesDisponiblesDeEspecialista($idUsu,$fecha2, $idTurno)
	{
		if ($this->objsBloquesDisponiblesDeEspecialista=='')
		{
		        $c = new Criteria();
                /*$dia = substr($this->dia,0,2);
     			$mes = substr($this->dia,3,2);
     			$ano = substr($this->dia,6,4);
                $dia2 = $ano.'-'.$mes.'-'.$dia;*/

                $dia = substr($fecha2,0,2);
     			$mes = substr($fecha2,3,2);
     			$ano = substr($fecha2,6,4);
     			$fecha = $ano.'-'.$mes.'-'.$dia;
                //print $dia.'-'.$mes.'-'.$ano;
                //exit;
		    	$c->add(CitaPeer::ESPECIALISTA_ID,$idUsu);
		    	$c->add(CitaPeer::FECHA,$fecha);

				$c->addJoin(BloquePeer::ID,CitaPeer::BLOQUE_ID);
				$c->add(BloquePeer::TURNO_ID,$idTurno);
                $c->addAscendingOrderByColumn(BloquePeer::ID);
				$citas = BloquePeer::doSelect($c);

			$ids = array();
			$i = 0;
			foreach ($citas as $registro)
         	{
         		$ids[$i] = $registro->getId();
				$i++;
          	}

		    $c2 = new Criteria();
			$c2->add(BloquePeer::TURNO_ID,$idTurno);
		    $c2->add(BloquePeer::ID, $ids , Criteria::NOT_IN);
		    $c2->addAscendingOrderByColumn(BloquePeer::ID);
		    $horas = BloquePeer::doSelect($c2);



         	}
         $this->objsBloquesDisponiblesDeEspecialista = $horas;
         return $this->objsBloquesDisponiblesDeEspecialista;
	 }


}